/**
 * @author yangbing
 * @time 2022-07-01 16PM
 * @description 数仓配置
 */
import { AES, enc } from 'crypto-js'

import Vue from 'vue'
//引入数仓
import Vuex from 'vuex'
//这里是引入数据持久化插件
import persistedstate from 'vuex-persistedstate'
Vue.use(Vuex)

//这里生成一个仓库实例
const store = new Vuex.Store({ 
    //这里注册插件 将我们的数据持久化插件 注册到我们的sessionstorage上面 
    plugins:[
        persistedstate({
            storage:window.sessionStorage
        })
    ],
    //这是一个模块
    modules:{
        //这个模块里面分为很多模块 这是其中 的common公关模块 有可能会有其他的模块
        common:{
            //开启命名空间
            namespaced:true,
            //数据初始化
            state:{
                token:'',
                userId:'',
                //这个是一个数组
                menuList:[],
                // select:false,
                userinfo:{},

                userRight:{}
            },
            //将 数据暴露给外界
            getters:{
                token: function(_state) {
                    //这里是解密   密钥是'yangbing'
                    // return AES.decrypt(_state.token,'yangbing').toString(enc.Utf8)
                    return _state.token
                },
                //将我们state里的数据  返回
                //我们这里返回  不能带有花括号！！！！！
                // userId:_state=>{_state.userId},  这是错误的！！！
                userId:_state=>_state.userId,
                menuList:_state=>_state.menuList,
                // select:_state=>_state.select
                userinfo:_state=>_state.userinfo,
                userRight:_state=>_state.userRight,
            },
            mutations:{
                //这里扭转数据  接收一个state  在接收传进来的数据  然后将传进来的数据   赋值给我们的state里面
                mutationToken(_state,_token){
                    //这里是加密
                    // _state.token = AES.encrypt(_token,'yangbing').toString()
                    _state.token = _token
                },
                mutationUserId(_state,_userId){
                    _state.userId = _userId
                },
                mutationMenuList(_state,_menuList){
                    _state.menuList = _menuList
                },
                // mutationselect(_state,_select){
                //     _state.select = _select
                // },
                mutationuserinfo(_state,_userinfo){
                    _state.userinfo = _userinfo
                },

                mutationuserRight(_state,_userRight){
                    _state.userRight = _userRight
                },
            }
        }
    }
})

export default store